/**
 * Valida una cedula y despliega en error.
 * autor Armando Maldonado <amaldonado@tradesystem.com.ec>
 * @param {type} $id_input el id del input a ser validado
 * @returns {$valido|Boolean}
 */
function validarCI($id_input) {
    $valido = validarcedula($id_input);
    desplegarerror($id_input, $valido, 'Cédula invalida');
    return $valido;
}
/**
 * Valida una ruc y despliega en error.
 * autor Armando Maldonado <amaldonado@tradesystem.com.ec>
 * @param {type} $id_input el id del input a ser validado
 * @returns {$valido|Boolean}
 */
function validarRUC($id_input) {
    $valido = validacionRUC($id_input);
    desplegarerror($id_input, $valido, 'Ruc invalido');
    return $valido;

}
/**
 * Valida un pasaporte y despliega en error.
 * @autor Armando Maldonado <amaldonado@tradesystem.com.ec> 
 * @param {type} $id_input el id del input a ser validado
 * @returns {$valido|Boolean}
 */
function validarPASS($id_input) {
    $valido = validarpasaporte($id_input);
    desplegarerror($id_input, $valido, 'Pasaporte no puede ser nulo');
    return $valido;
}
/**
 * Me valida si una cédula es correcta o no. 
 * @autor Armando Maldonado <amaldonado@tradesystem.com.ec>
 * @param {type} inputCedula
 * @returns {Boolean}
 */
function validarcedula(inputCedula) {
    inputCedulaVal = $(inputCedula).val();
    if (inputCedulaVal.length == 10 && (!inputCedulaVal.length == 0)) {
        var j = parseInt(inputCedulaVal.substring(-1, 2));
        var k = parseInt(inputCedulaVal.substring(2, 3));
        var r = 0;
        var suma = 0;
        if (j >= 00 && j <= 24 && k < 6) {
            for (i = 0; i <= inputCedulaVal.length - 2; i += 2) {
                var t = parseInt(inputCedulaVal.charAt(i)) * 2;
                r += t + "";
            }
            for (i = 1; i <= inputCedulaVal.length - 2; i += 2) {
                var t = inputCedulaVal.charAt(i);
                r += t + "";
            }
            for (i = 0; i <= r.length - 1; i++) {
                suma += parseInt(r.charAt(i));
            }
            var digito = 0;
            var divi = suma % 10;
            if (divi == 0) {
                digito = 0;
            } else {
                digito = 10 - divi;
            }
            if (digito == inputCedulaVal.charAt(9)) {
                return true;
            } else {
                return false;
            }
        } else {
            return false;
        }
    } else {
        return false;
    }
}
/**
 * Me valida si un ruc es correcta o no. 
 * @autor Armando Maldonado <amaldonado@tradesystem.com.ec>
 * @param {type} ruc
 * @returns {Boolean}
 */
function validacionRUC(ruc) {
    $ruc = $(ruc).val();
    if (!$ruc.length == 13 || ($ruc.length == 0) || $ruc.length < 13) {//compruebo si que el numero enviado es vacio o null
        return false;
    }
    else {
        $suma = 0;
        $residuo = 0;
        $pri = false;
        $pub = false;
        $nat = false;
        $numeroProvicias = 22;
        $modulo = 11;
        $d1 = $ruc.charAt(0);
        $d2 = $ruc.charAt(1);
        $d3 = $ruc.charAt(2);
        $d4 = $ruc.charAt(3);
        $d5 = $ruc.charAt(4);
        $d6 = $ruc.charAt(5);
        $d7 = $ruc.charAt(6);
        $d8 = $ruc.charAt(7);
        $d9 = $ruc.charAt(8);
        $d10 = $ruc.charAt(9);

        /* El tercer digito es: */
        /* 9 para sociedades privadas y extranjeros */
        /* 6 para sociedades publicas */
        /* menor que 6 (0,1,2,3,4,5) para personas naturales */
        if ($d3 == 7 || $d3 == 8) {
            return false;
        }
        /* Solo para personas naturales (modulo 10) */
        if ($d3 < 6) {
            $nat = true;
            $p1 = $d1 * 2;
            if ($p1 >= 10)
                $p1 -= 9;
            $p2 = $d2 * 1;
            if ($p2 >= 10)
                $p2 -= 9;
            $p3 = $d3 * 2;
            if ($p3 >= 10)
                $p3 -= 9;
            $p4 = $d4 * 1;
            if ($p4 >= 10)
                $p4 -= 9;
            $p5 = $d5 * 2;
            if ($p5 >= 10)
                $p5 -= 9;
            $p6 = $d6 * 1;
            if ($p6 >= 10)
                $p6 -= 9;
            $p7 = $d7 * 2;
            if ($p7 >= 10)
                $p7 -= 9;
            $p8 = $d8 * 1;
            if ($p8 >= 10)
                $p8 -= 9;
            $p9 = $d9 * 2;
            if ($p9 >= 10)
                $p9 -= 9;
            $modulo = 10;
        }
        /* Solo para sociedades publicas (modulo 11) */
        /* Aqui el digito verficador esta en la posicion 9, en las otras 2 en la pos. 10 */
        else if ($d3 == 6) {
            $pub = true;
            $p1 = $d1 * 3;
            $p2 = $d2 * 2;
            $p3 = $d3 * 7;
            $p4 = $d4 * 6;
            $p5 = $d5 * 5;
            $p6 = $d6 * 4;
            $p7 = $d7 * 3;
            $p8 = $d8 * 2;
            $p9 = 0;
        }
        /* Solo para entidades privadas (modulo 11) */
        else if ($d3 == 9) {
            $pri = true;
            $p1 = $d1 * 4;
            $p2 = $d2 * 3;
            $p3 = $d3 * 2;
            $p4 = $d4 * 7;
            $p5 = $d5 * 6;
            $p6 = $d6 * 5;
            $p7 = $d7 * 4;
            $p8 = $d8 * 3;
            $p9 = $d9 * 2;
        }
        $suma = $p1 + $p2 + $p3 + $p4 + $p5 + $p6 + $p7 + $p8 + $p9;
        $residuo = $suma % $modulo;
        /* Si residuo=0, dig.ver.=0, caso contrario 10 - residuo */
        $digitoVerificador = $residuo == 0 ? 0 : $modulo - $residuo;
        /* ahora comparamos el elemento de la posicion 10 con el dig. ver. */
        if ($pub == true) {
            if ($digitoVerificador != $d9) {
                return false;
            }
            /* El ruc de las empresas del sector publico terminan con 0001 */
            if ($ruc.substring(9) != '0001') {
                return false;
            }
        } else if ($pri == true) {
            if ($digitoVerificador != $d10) {
                return false;
            }
            if ($ruc.substring(10) != '001') {
                return false;
            }
        } else if ($nat == true) {
            if ($digitoVerificador != $d10) {
                return false;
            }
            if ($ruc.length > 10 && $ruc.substring(10) != '001') {
                return false;
            }
        }
        return true;
    }
}

/**
 * Me valida si un pasaporte es correcta o no. 
 * @autor Armando Maldonado <amaldonado@tradesystem.com.ec>
 * @param {type} $id_input
 * @returns {Boolean}
 */
function validarpasaporte($id_input) {
    $val = $($id_input).val();
    if ($val.length == 0)
        return false;
    else
        return true;
}

/**
 * Despliega el error al input que lo tuvo.
 * @autor Armando Maldonado <amaldonado@tradesystem.com.ec>
 * @param {type} $id_input
 * @param {type} $valido
 * @param {type} $mensaje
 * @returns {undefined}
 */
function  desplegarerror($id_input, $valido, $mensaje) {
    $divcontrolsgroup = $($id_input).parent(".controls").parent(".control-group");
    if ($valido) {
        $($id_input + '_em_').css('display', 'none');
        $divcontrolsgroup.removeClass('error');
        $divcontrolsgroup.addClass('success');
    }
    else {
        $divcontrolsgroup.removeClass('success');
        $divcontrolsgroup.addClass('error');
        $($id_input + '_em_').css('display', '');
        $($id_input + '_em_').html($mensaje);
    }

}
/**
 * Verifico depende del selec haga las validaciones respectivas.
 * @autor Armando Maldonado <amaldonado@tradesystem.com.ec>
 * @param {type} $id_select
 * @param {type} $id_input
 * @returns {$valido|Boolean}
 */
function  validarCampoID($id_select, $id_input) {
    $val_selectTI = $($id_select).val();
    switch ($val_selectTI) {
        case ('C'): //Cédula
            return validarCI($id_input);
            break;
        case ('P'): //Pasaporte
            return validarPASS($id_input)
            break;
        case ('R')://Ruc
            return validarRUC($id_input);
            break;
        case ('')://Cuando no hay nada
            return true;
            break;
    }
}